Arduino读取温湿度dh11+烟雾气体MQ2+彩灯ws2812

您所在的位置:网站首页 串口 ws2812 Arduino读取温湿度dh11+烟雾气体MQ2+彩灯ws2812

Arduino读取温湿度dh11+烟雾气体MQ2+彩灯ws2812

2023-04-08 14:49| 来源: 网络整理| 查看: 265

1获取温湿度

D4-x信号线

 

 

 读取温湿度 #include // типы сенсоров: DHT11, DHT21, DHT22 DHT dht(4, DHT11); void setup() { Serial.begin(9600); dht.begin(); } void loop() { dht.read(); if(dht.getState()==DHT_OK) { String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity()); Serial.println(msg); } //delay(2000); }

  

 

读取引脚状态 int pushButton = 2; void setup() { Serial.begin(9600);//串口通信 pinMode(pushButton, INPUT);//红外检测 } void loop() { //红外 int redState = digitalRead(pushButton); String msg=String("")+"-redState-"+String(redState); Serial.println(msg); delay(10); }

  

 

获取mq2

原理

https://blog.csdn.net/qq_40276310/article/details/80766166?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:

数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。

 

 

#define Sensor_AO A0 #define Sensor_DO 2 unsigned int sensorValue = 0; void setup() { pinMode(Sensor_DO, INPUT); Serial.begin(9600); } void loop() { sensorValue = analogRead(Sensor_AO); Serial.print("Sensor AD Value = "); Serial.println(sensorValue); if (digitalRead(Sensor_DO) == LOW) { Serial.println("Alarm!"); } //delay(1000); }

  

光照传感器

/* Name: Sketch1.ino Created: 2019/2/10 20:33:27 Author: Administrator */ uint8_t PinLed = 3; //led正极 uint8_t PinLightsensor = A0; //光传感模块模拟数据接收引脚 //注意:我是用的光传感器模块是随着光照增加输出减小的。 int MaxLight = 850; //光传感器模块完全遮蔽时的输出值(实际值比这个略小) int MinLight = 300; //光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大) // the setup function runs once when you press reset or power the board void setup() { pinMode(PinLed, OUTPUT); pinMode(PinLightsensor, INPUT); } // the loop function runs over and over again until power down or reset void loop() { int curLight = analogRead(PinLightsensor); //读取光传感器当前值 int outVal = map(curLight, MinLight, MaxLight, 0, 255); //把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。 outVal = constrain(outVal, 0, 255); //强制映射后的值在0-255范围内 analogWrite(PinLed,outVal ); //输出亮度,当光传感器得到的光照越少,那么LED就越亮 delay(100); //延时 }

  

获取温度 18b20 #include #include #define BUS 2 OneWire onewire(BUS); DallasTemperature sensors(&onewire); void setup() { Serial.begin(9600); sensors.begin(); } void loop() { sensors.requestTemperatures(); String temp= String(sensors.getTempCByIndex(0)); Serial.println(temp); }

  

综合例程

、mq2

#include // типы сенсоров: DHT11, DHT21, DHT22 DHT dht(4, DHT11); #define Sensor_AO A0 unsigned int sensorValue = 0; void setup() { Serial.begin(9600); dht.begin(); } void loop() { dht.read(); if(dht.getState()==DHT_OK) { sensorValue = analogRead(Sensor_AO);//5000-20000PPM 对应 0-1023 String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-MQ2-"+String(sensorValue)+"-"; Serial.println(msg); } //delay(2000); }

 

光照+温湿度 dh11

 

#include // типы сенсоров: DHT11, DHT21, DHT22 DHT dht(4, DHT11); //光传感模块模拟数据接收引脚 #define Sensor_A7 A7 unsigned int sensorValue = 0; //注意:我是用的光传感器模块是随着光照增加输出减小的。 int MaxLight = 850; //光传感器模块完全遮蔽时的输出值(实际值比这个略小) int MinLight = 10; //光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大) // 主函数执行一次 void setup() { Serial.begin(9600);//串口初始化 dht.begin(); //温湿度传感器初始化 //Serial.println(\'go\'); } void loop() { dht.read();//读取温湿度 if(dht.getState()==DHT_OK) { sensorValue = analogRead(Sensor_A7);//5000-20000PPM 对应 0-1023 int outVal = map(sensorValue, MinLight, MaxLight, 0, 255); //把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。 outVal = constrain(outVal, 0, 255); //constrain是一个宏,它把一个值强制限定在一个范围内,省去了我们使用一组IF语句 outVal=255-outVal; //数据打包 String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Light-"+String(outVal)+"-"; //串口发给树莓派 Serial.println(msg); } delay(200); }

  

 

 光照+mq2+温湿度

#include //获取温湿度 DHT11, DHT21, DHT22 DHT dht(4, DHT11); //光传感模块模拟数据接收引脚 #define Sensor_light A1 unsigned int sensorValue_light = 0; //注意:我是用的光传感器模块是随着光照增加输出减小的。 int MaxLight = 850; //光传感器模块完全遮蔽时的输出值(实际值比这个略小) int MinLight = 0; //光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大) //燃气烟雾浓度 #define Sensor_mq2 A2 unsigned int sensorValue_mq2 = 0; void setup() { Serial.begin(9600);//串口通信 dht.begin();//温湿度采集开始 } void loop() { dht.read();// 温湿度 if(dht.getState()==DHT_OK) { //光照 sensorValue_light = analogRead(Sensor_light);//5000-20000PPM 对应 0-1023 int light_outVal = map(sensorValue_light, MinLight, MaxLight, 0, 255); //把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。 light_outVal = constrain(light_outVal, 0, 255); //constrain是一个宏,它把一个值强制限定在一个范围内,省去了我们使用一组IF语句 light_outVal=255-light_outVal; //烟雾燃气 sensorValue_mq2 = analogRead(Sensor_mq2); //数据打包 String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Light-"+String(light_outVal)+"-MQ2-"+String(sensorValue_mq2); Serial.println(msg); } //delay(2000); }

  

 MQ2+雨滴传感器+温湿度

数值映射0-1023   ~ 0-255

串口打包输出

#include //获取温湿度 DHT11, DHT21, DHT22 DHT dht(4, DHT11); //水滴传感模块模拟数据接收引脚 #define Sensor_water A1 unsigned int sensorValue_water = 0; //燃气烟雾浓度 #define Sensor_mq2 A2 unsigned int sensorValue_mq2 = 0; // 将数据映射过去 int GuiyiValue(int Real_Value=0,int Real_Min=0 , int Real_Max=1024 ,int tager_min=0,int tager_max=255) { int outVal = map(Real_Value, Real_Min, Real_Max, tager_min, tager_max); //(Real_Min-Real_Max)映射数据到范围 (tager_min-tager_max) outVal = constrain(outVal, tager_min, tager_max); // 判断数据是否在范围内并限定上下限 return outVal; } void setup() { Serial.begin(9600);//串口通信 dht.begin();//温湿度采集开始 } void loop() { dht.read();// 温湿度 if(dht.getState()==DHT_OK) { //水滴 sensorValue_water = 1024-analogRead(Sensor_water);//水滴越多值越小 所以取反 sensorValue_water=GuiyiValue(sensorValue_water,0 , 1024 ,0,255); //烟雾燃气 sensorValue_mq2 = analogRead(Sensor_mq2); //手捂着哈气实际最大620 最大应该带是1023 //数据打包 String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Water-"+String(sensorValue_water)+"-MQ2-"+String(sensorValue_mq2)+"-"; Serial.println(msg); } //delay(2000); }

  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3